package org.soderiakelvy.controller.producto;

import java.util.List;



import java.util.Map;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import org.soderiakelvy.controller.util.Constante;
import org.soderiakelvy.controller.util.SelectOneMany;
import org.soderiakelvy.model.domain.ProductoVO;
import org.soderiakelvy.model.service.ProductoServicio;
import org.soderiakelvy.model.service.imp.ProductoServicioImp;
import org.soderiakelvy.model.util.ConstantModel;

@ManagedBean
public class ProductoList {
	private List<ProductoVO> productos = SelectOneMany.getAllProductos();
    private ProductoServicio servicio;
    private ProductoVO productoSelected;

	public ProductoList(){
		servicio = new ProductoServicioImp();
		productoSelected = new ProductoVO();
	}	
	
	public String prepareEdit() {
		FacesContext fc = FacesContext.getCurrentInstance();
		Map<String,Object> sessionParams = fc.getExternalContext().getSessionMap();
		sessionParams.put("producto", productoSelected);
		return Constante.URL_PRODUCTO_EDIT;
	}
	
	public String nuevoProducto(){
		return Constante.URL_PRODUCTO_NEW;
	}
	
	public void eliminarProducto(){
		String result = servicio.deleteProductoVO(productoSelected);
		if(result.equals(ConstantModel.SUCCESS)){
			productos = SelectOneMany.getAllProductos();
		}else {
			if(result.equals(ConstantModel.DELETE_ASIGNADO)){
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Error: No se puede eliminar el producto porque esta asignado", ""));	
			}else {
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Error: Surgio un error interno al eliminar el Producto", ""));
			}
		}
	}
	
	
	//--- GET AND SET
	public List<ProductoVO> getProductos() {
		return productos;
	}

	public ProductoVO getProductoSelected() {
		return productoSelected;
	}

	public void setProductoSelected(ProductoVO productoSelected) {
		this.productoSelected = productoSelected;
	}
	
	
	
}
